diff options
| author | Sebastien Castiel <sebastien@castiel.me> | 2023-12-06 20:49:28 -0500 |
|---|---|---|
| committer | Sebastien Castiel <sebastien@castiel.me> | 2023-12-06 20:49:28 -0500 |
| commit | 59bb784b1c50ad57e7a0ce75cd0dc6fcd85a5594 (patch) | |
| tree | 623e7b16a78444acec191e819ab6cd0e8cec76d8 /src/app/groups/[groupId] | |
| parent | ae7360caf8be551979759084c3b66677a75bcf00 (diff) | |
Better expense list
Diffstat (limited to 'src/app/groups/[groupId]')
| -rw-r--r-- | src/app/groups/[groupId]/expenses/page.tsx | 63 |
1 files changed, 53 insertions, 10 deletions
diff --git a/src/app/groups/[groupId]/expenses/page.tsx b/src/app/groups/[groupId]/expenses/page.tsx index c99d081..0047b1e 100644 --- a/src/app/groups/[groupId]/expenses/page.tsx +++ b/src/app/groups/[groupId]/expenses/page.tsx @@ -7,14 +7,6 @@ import { CardHeader, CardTitle, } from '@/components/ui/card' -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from '@/components/ui/table' import { getGroup, getGroupExpenses } from '@/lib/api' import { cn } from '@/lib/utils' import { ChevronRight, Plus } from 'lucide-react' @@ -51,7 +43,58 @@ export default async function GroupExpensesPage({ <CardContent className="p-0"> {expenses.length > 0 ? ( - <Table> + expenses.map((expense) => ( + <div + className={cn( + 'border-t flex justify-between pl-6 pr-2 py-4 text-sm', + expense.isReimbursement && 'italic', + )} + > + <div> + <div>{expense.title}</div> + <div className="text-xs text-muted-foreground"> + Paid by{' '} + <Badge variant="secondary"> + { + group.participants.find((p) => p.id === expense.paidById) + ?.name + } + </Badge>{' '} + for{' '} + {expense.paidFor.map((paidFor, index) => ( + <Badge variant="secondary" key={index} className="mr-1"> + { + group.participants.find( + (p) => p.id === paidFor.participantId, + )?.name + } + </Badge> + ))} + </div> + </div> + <div className="flex items-center"> + <div className="tabular-nums whitespace-nowrap font-bold"> + {group.currency} {expense.amount.toFixed(2)} + </div> + <Button size="icon" variant="link" className="-my-2" asChild> + <Link href={`/groups/${groupId}/expenses/${expense.id}/edit`}> + <ChevronRight className="w-4 h-4" /> + </Link> + </Button> + </div> + </div> + )) + ) : ( + <p className="px-6 text-sm py-6"> + Your group doesn’t contain any expense yet.{' '} + <Button variant="link" asChild className="-m-3"> + <Link href={`/groups/${groupId}/expenses/create`}> + Create the first one + </Link> + </Button> + </p> + )} + {/* <Table> <TableHeader> <TableRow> <TableHead>Title</TableHead> @@ -111,7 +154,7 @@ export default async function GroupExpensesPage({ </Table> ) : ( <div className="p-6">Your group doesn’t have any expense yet.</div> - )} + )} */} </CardContent> </Card> ) |
